I agree with Nick that simply referencing the value of a state variable represents less cognitive burden for the programmer, than remembering the name of yet another function call. OSX has gotten to an absurd API count, and when you take the API's for all the Java classes it exceeds 10,000, which is a huge cognitive burden for the programmer. Java exacerbates the API problem by having multiple ways to do similar things, so you then have to wonder which API set would be best, and when you merge other modules of code from other authors, you then start mixing which API sets are in use, and it gets ugly in a hurry. This is one of the reasons why the era of interchangeable parts did not occur with the Java language, and one of my reasons why Java has to be scrapped ASAP.
I think of a function as doing some isolated calculation like Trig functions which have a very complex internal implementation but are trivial to use, taking only a single input.
The problem i have with API's is the quantity one has to learn to accomplish anything. In the Apple 2 days, you might learn a few dozen. In Apple Macintosh it was a few hundred. Win32 GDI was also a few hundred albeit a much more modal/complex set than Apple's clever and clean Quickdraw. Fast forward to today, and nobody even prints books with the full set of API's because the books would be too fat. Because we aren't printing the documentation on paper, people aren't noticing the load, but I prefer printed documentation, and after emptying my 500 sheet input tray of my fancy canon laser printer, i give up and want to scrap the whole thing. My Beads language project is the result of my extreme distaste for how complex the current toolchain is, mostly caused by an API explosion. You can build a graphical interactive chess game with audio, autosizing graphics, etc., with under 20 API's and i consider that a big win for the programmer as I don't need a fancy context sensitive IDE to help prop up an overcomplex mess, and can learn the 20 API calls after repetitive usage.